package net.pingfang.devicelock.util;

import lombok.extern.slf4j.Slf4j;

import java.util.Arrays;

@Slf4j
public class ReadTooUtil {

    /*
    * 首先接收完整报文
    * 1.判断是否存在两个0x7b
    * a.若存在，则取到第二个0x7b开头 会不会存在三个0x7b
    * b.若不存在，则从0x7b取到结尾
    *
    * 2.若不存在0x7b
    * 没有收到报文，需要重新下发指令
    *
    *
    * */
    public static String NetRecvOnePack(Object msg){
        String buf = msg.toString().toUpperCase();
        if(buf.length() < 12){
            log.error("收到响应报文长度不足12");
            return null;
        }
        if(buf.contains("7B")){
            int num = buf.replaceAll("7B","7B ").length() - buf.length();
//            if(buf.indexOf("7B") != buf.lastIndexOf("7B")){
            if(num > 1){
                buf = Arrays.stream(buf.split("7B"))
                        .filter(s -> s != null && !s.isEmpty())
                        .toArray(String[]::new)[0];
            }
            return buf;
        }else{
            log.error("收到响应报文长度不包含0x7b");
            return null;
        }
    }

    public static void main(String[] args) {
//        String str = "7B 5A 43 4E 48 44 50 00 4D 00 46 16 06 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 4B 80";
//        str += "7B 5A 43 4E 48 44 50 00 4D 00 45 12 30 30 30 30 30 30 30 30 30 30 20 25 05 15 11 35 32 03 9E 94 ";
//        str += "7B 5A 43 4E 48 44 50 00 4D 00 43 12 30 30 30 30 30 30 30 30 30 30 20 25 05 15 11 35 44 75 9F 90";
//        str = str.replaceAll(" ","");
//        String[] arr = str.split("7B");
//        arr = Arrays.stream(arr)
//                .filter(s -> s != null && !s.isEmpty())
//                .toArray(String[]::new);
//        log.info(Arrays.toString(arr));

        String str = "ABSCSF3XXFFF";
        log.info(str.indexOf("5C")+"++++++++++=");
    }

}
